=Luna Video Stream Server (VSS)=

==功能==
<p>显示6路MPEG-TS流媒体(另含一路预览视频通道)，提供滚动字幕。</p>
<p>MPEG-TS流的视频编码部分必须为H.264，音频部分必须为AAC，每秒1～2个I帧(FFMPEG参数-g 14)，其它格式的视频流文件必须经过转换(是否在服务器上直接提供转换功能待定)才能进行播放。</p>
<p>可设置在视频流播放指定的时间间隔时插入一段广告，广告视频流的要求同上述。</p>
<p>视频流和滚动字幕均通过UDP多播发送，视频流广播地址为udp://225.0.0.1:2001-2006，字幕为udp://224.0.0.1:2001-2006，另提供udp://225.0.0.1:2007以进行视频预览。
服务器接受UDP广播请求进行控制</p>

==依赖关系==
{| class="wikitable"
|-
! 库 !! 版本要求 
|-
| GLib 2.0 || >=2.32
|-
| FFMPEG (libav) || >=1.0
|}

==字幕协议==
<p>字幕数据使用XML格式，协议约定如下:</p>
<pre>
<taskitem>
  <tasktype>04</tasktype> #必须存在，04为即时消息
  <taskid>(UUID)</taskid> #必须存在，消息的UUID
  <fontsize>12</fontsize> #非必须，字体大小
  <fontcolor>#FFFFFF</fontcolor> #非必须，字体颜色
  <message>消息测试</message> #必须存在，消息文本
  <keeptime>0</keeptime> #非必须存在，持续显示时间，0为永久，正数时为保持时间，单位为秒
</taskitem>
</pre>

==客户端控制协议==
<p>控制协议使用和字幕相似的格式，并使用相同的广播地址，协议约定如下</p>
<pre>
<taskitem>
  <tasktype>03</tasktype> #必须存在，03为控制消息
  <taskid>(UUID)</taskid> #必须存在，消息的UUID
  <control>0</control> #必须存在，0为音量调节
  <volume>100</volume> #必须存在，音量范围0-100
  <keeptime>-1</keeptime> #必须存在，音量持续时间，-1为永久，正数时为保持时间，单位为秒
</taskitem>

<taskitem>
  <tasktype>03</tasktype>
  <taskid>(UUID)</taskid> #必须存在，消息的UUID
  <control>2</control> #必须存在，2为设定屏幕左侧显示的网页
  <url>http://www.example.com</url> #所需要显示的页面地址，若无此项或值为空则隐藏左侧的网页显示部分
</taskitem>
</pre>

==运行环境==
<p>(待定)</p>

==客户端显示布局==
屏幕分辨率为1280x720，分为3个区域，左侧为静态网页，范围(0,0)-(320,720)，右上为视频流媒体(320,0)-(1280,640)，右下为滚动字幕(320,640)-(1280,720)

==当前进度==
{| class="wikitable"
|-
! 名称 !! 状态 
|-
| 视频流回放 || style='color: green' | 完成
|-
| 视频流进度控制 || style='color: green' | 完成
|-
| 播放列表 || style='color: green' | 完成
|-
| 广告插入 || style='color: green' | 完成
|-
| 滚动字幕 || style='color: green' | 完成
|-
| 客户端 || style='color: green' | 完成
|-
| 服务端系统整合 || style='color: green' | 完成
|-
| 客户端系统整合 || style='color: green' | 完成
|}

==测试命令==
<pre>
socat UDP4-RECVFROM:2001,ip-add-membership=224.0.0.1:0.0.0.0,fork,reuseaddr STDIO #模拟滚动字幕客户端
socat UDP4-RECVFROM:2001,ip-add-membership=225.0.0.1:0.0.0.0,fork,reuseaddr STDIO #模拟视频流客户端

ffmpeg -re -i sample.m2ts -codec copy -f mpegts udp://225.0.0.1:2001 #发送视频流
</pre>